// Copyright (c) 2024, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

class A {
  const A();
  const factory A.redir() = B;
  const A.named();
  const factory A.selfRedir() = A.named;
}

class B extends A {
  const B();
}

typedef TA = A;

class Test {
  final A a;

  const Test.named1() : a = const A();
  const Test.named2() : a = const A.redir();
  const Test.named3() : a = const A.named();
  const Test.named4() : a = const A.selfRedir();
  const Test.named5() : a = const TA();
  const Test.named6() : a = const TA.redir();
  const Test.named7() : a = const TA.named();
  const Test.named8() : a = const TA.selfRedir();
}
